EF context
Home

EF context

EF context

De kern van het Entity Framework Code First is de System.Data.Entity.DbContext klasse. Het is deze klasse (of, beter gezegd, de klassen die jij maakt op basis van deze klasse) die de toegangspoort tot de database is en alle methoden biedt die je nodig hebt om met de database te werken.

Context

Voordat een klassemodel kan worden gebruikt om een query op een database uit te voeren, moet Entity Framework weten hoe het code (klassen, eigenschappen, en instanties) heen en weer moeten vertalen van C# naar SQL (in het bijzonder, tabellen, kolommen en rijen ). Daarvoor gebruikt het ORM of object relational mapping.

Een context is een klasse die erft van DbContext en die een aantal entiteit-collecties toegankelijk maakt in de vorm van DbSet<T> eigenschappen.

Een context voorbeeld

De DbContext klasse biedt een aantal constructors, meestal voor het configureren van de connectie-string:

public class MyEntities : DbContext 
{ public MyEntities() { } 

public MyEntities(bool alternateConnection) 
  : base(alternateConnection ? "Name=MyFirstApp" : "Name=Mikmak") { } 

public MyEntities(String nameOrConnectionString) 
  : base(nameOrConnectionString) { } }

Indien geen argumenten aan de constructor worden meegegeven, gaat DbContext er van uit dat er een connectie-string met dezelfde naam als de klasse van de context in het configuratiebestand staat.

Er is ook een constructor die een enkele parameterstring aanneemt. Deze parameter zal ofwel een volledige connectie-string, die specifiek is voor de huidige databaseprovider, of een naam van een connectie-string uit het configuratiebestand zijn.

En er is een constructor die een bestaande DBConnection als argument aanneemt. Entity Framework controlleert deze verbinding niet volledig, bijvoorbeeld, het zal niet proberen ze te verwijderen wanneer ze niet langer nodig is.

Voorbeelden

Om te beginnen maken we met behulp van de klasse DbContext, onze eigen context klasse die ervan afgeleid is. De entiteit in het voorbeeld is een postcode tabel met de naam PostalCodes. We voegen dus een eigenschap met de naam PostalCodes toe van het type DbSet<T>.

Met Windows authenticatie connectiestring:

using System.Data.Entity;

namespace LerenWerkenMetEFCF.Models
{
    public class MyEntities : DbContext
    {
        public MyEntities()
            : base("name=JefInghelbrechtWindowsAuthentication")
        {
        }

        public virtual DbSet<PostalCode> PostalCodes { get; set; }

    }
}

Met SQL authenticatie connectiestring:

using System.Data.Entity;

namespace LerenWerkenMetEFCF.Models
{
    public class MyEntities : DbContext
    {
        public MyEntities()
            : base("name=JefInghelbrecht")
        {
        }

        public virtual DbSet<PostalCode> PostalCodes { get; set; }

    }
}

In de voorbeelden hierboven hebben we een aangepaste database context klasse met de naam MyEntities gemaakt, die is afgeleid van DbContext. Deze bijzondere klasse definieert een System.Data.Entity.DbSet<T> eigenschap, waarbij T de entiteit is die zal worden bewerkt en opgeslagen in de database. In het bovenstaande voorbeeld hebben we System.Data.Entity.DbSet<T> gedefinieerd om aan te geven dat de applicatie instanties van de PostalCodes klasse moet opslan en bewerken in de database. Je kan meer dan één entiteit in de gegevens context definiëren, en dat gaan we al naargelang het project Mikmak vordert ook doen.

JI
2016-11-23 13:13:49